#include <iostream>
#include <pthread.h>
#include <unistd.h>
#include <cassert>

using std::cin;
using std::cout;
using std::endl;

int g_val = 0;
// 这里是 —— 新线程/从线程
// void *pthread_handler(void *arr)
// {
//     const char *name = (const char *)arr;
//     while (1)
//     {
//         // cout << "我是新线程!name :" << ptr << endl;
//         cout << "我是新线程, 我正在运行! name: " << name  << " : " << g_val++ << " &g_val : " << &g_val << endl;
//         sleep(1);
//         fflush(stdout);
//     }
// }
// int main()
// {
//     pthread_t tid;
//     int n = pthread_create(&tid, nullptr, pthread_handler, (void *)"pthread one");
//     assert(n == 0);
//     (void)n;
//     // 这里到后面是 —— 主线程！
//     while (1)
//     {
//         char tidbuffer[1024];
//         snprintf(tidbuffer, sizeof(tidbuffer), "0x%x", tid); // 格式化函数 —— 将tid转化为0x%x十六进制的类型，放到tidbuffer里面
//         // cout << "我是主线程!我的tid是 :" << tidbuffer << endl;
//         cout << "我是主线程, 我正在运行!, 我创建出来的线程的tid: " << tidbuffer << " : " << g_val << " &g_val : " << &g_val << endl;
//         sleep(1);
//         fflush(stdout);
//     }
//     return 0;
// }

void *pthread_handler(void *arr)
{
    const char *name = (const char *)arr;
    while (1)
    {
        cout << "我是新线程:" << pthread_self() << endl;
        sleep(1);
    }
}
int main()
{
    pthread_t tid;
    pthread_create(&tid, nullptr, pthread_handler, (void *)"pthread one");
    while (1)
    {

        cout << "我是主线程: " << pthread_self() << "新线程的tid:" << tid << endl;
        sleep(1);
    }
    return 0;
}